package com.wzg;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.*;
import java.io.File;

public class ImagePreviewFileChooser extends JFileChooser {

    private JLabel previewLabel;

    public ImagePreviewFileChooser() {
        super();
        // 设置文件过滤器
        FileNameExtensionFilter filter = new FileNameExtensionFilter("图片文件", "jpg", "jpeg", "png", "heic");
        setFileFilter(filter);

        // 创建预览面板
        previewLabel = new JLabel();
        previewLabel.setPreferredSize(new Dimension(200, 200)); // 设置预览面板大小
        previewLabel.setBorder(BorderFactory.createLineBorder(Color.BLACK)); // 添加边框

        // 将预览面板添加到文件选择器
        setAccessory(previewLabel);

        // 监听文件选择事件
        addPropertyChangeListener(e -> {
            if (JFileChooser.SELECTED_FILE_CHANGED_PROPERTY.equals(e.getPropertyName())) {
                File selectedFile = (File) e.getNewValue();
                if (selectedFile != null && isImageFile(selectedFile)) {
                    // 加载并显示图片
                    ImageIcon imageIcon = new ImageIcon(selectedFile.getAbsolutePath());
                    Image image = imageIcon.getImage();
                    // 调整图片大小以适应预览面板
                    Image scaledImage = image.getScaledInstance(previewLabel.getWidth(), previewLabel.getHeight(), Image.SCALE_SMOOTH);
                    previewLabel.setIcon(new ImageIcon(scaledImage));
                } else {
                    previewLabel.setIcon(null); // 清除预览
                }
            }
        });
    }

    // 检查文件是否为图片
    private boolean isImageFile(File file) {
        String name = file.getName().toLowerCase();
        return name.endsWith(".jpg") || name.endsWith(".jpeg") || name.endsWith(".heic");
    }
}
